package pms.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import pms.dao.JahrDao;
import pms.dao.FeiertagDao;
import pms.dao.SperrtagDao;

/**
 * <p>
 * Ein Controller, mit dem man die Feiertage und Sperrtage dem ausgewaehlten
 * Jahr zuordnet
 * </p>
 * <p>
 * ModelAndView Infos
 * <p>
 * <ul>
 * <li>title: Ueberschrift dieser View</li>
 * <li>message: Hinweise fuer den Benutzer</li>
 * <li>jahr: hier wird das ausgewaehlte Jahr ausgegeben</li>
 * <li>allefeiertageimjahr: alle Feiertage, die schon zugeordnet sind</li>
 * <li>allefeiertagedienichtimjahr: alle Feiertage, die noch nicht zugeordnet sind</li>
 * <li>allesperrtageimjahr: alle Sperrtage, die schon zugeordnet sind</li>
 * <li>allesperrtagedienichtimjahr: alle Sperrtage, die noch nicht zugeordnet sind</li>
 * </ul>
 * Der Name der ausgebenden View ist: 'waehleFeiertagSperrtagfuerJahr.jsp'
 * </p>
 * @see JahrDao
 * @see FeiertagDao
 * @see SperrtagDao
 */

public class WaehleFeiertagSperrtagfuerJahr extends AbstractController {
	
	private JahrDao jahrDao;
	private SperrtagDao sperrtagDao;
	private FeiertagDao feiertagDao;
	
	public JahrDao getJahrDao() {
		return jahrDao;
	}

	public void setJahrDao(JahrDao jahrDao) {
		this.jahrDao = jahrDao;
	}

	public SperrtagDao getSperrtagDao() {
		return sperrtagDao;
	}
	
	public void setSperrtagDao(SperrtagDao sperrtagDao) {
		this.sperrtagDao = sperrtagDao;
	}

	public FeiertagDao getFeiertagDao() {
		return feiertagDao;
	}

	public void setFeiertagDao(FeiertagDao feiertagDao) {
		this.feiertagDao = feiertagDao;
	}
	
	protected ModelAndView handleRequestInternal(
			HttpServletRequest httpServletRequest,
			HttpServletResponse httpServletResponse) throws Exception 
			{
			ModelAndView mv = new ModelAndView();
			
			// Welches Jahr wurde gewählt
			int idj = Integer.parseInt(httpServletRequest.getParameter("idj"));
			if (feiertagDao.findAll().isEmpty() || sperrtagDao.findAll().isEmpty()) {
				mv.addObject("title", "Waehle Feiertag/Sperrtag dem Jahr zuordnen");
				mv.setViewName("Fehler");
				if (feiertagDao.findAll().isEmpty()) {
					mv.addObject("message", "Es müssen zuerst Feiertage definiert werden!" +
							" Bitte Eingaben über Admin...");
				} else {
					mv.addObject("message", "Es müssen zuerst Sperrtage definiert werden!" +
							" Bitte Eingaben über Admin...");
				}
			} else {
			mv.addObject("title", "Zuordnen von Feiertagen und Sperrtagen zu einem Jahr");
			mv.addObject("message", "Ordne Feiertage und Sperrtage zu:");
			// Alle Feiertage und Sperrtage entsprechend zur Verfügung stellen
			mv.addObject("jahr", jahrDao.findById(idj).getJahr());
			mv.addObject("jahrid", jahrDao.findById(idj).getId());
		    mv.addObject("allefeiertageimjahr", jahrDao.findeallefeiertagediezugeordnet(idj));
		    mv.addObject("allefeiertagedienichtimjahr", feiertagDao.findeallefeiertagedienichtzugeordnet(jahrDao.findeallefeiertagediezugeordnet(idj)));
		    mv.addObject("allesperrtageimjahr", jahrDao.findeallesperrtagediezugeordnet(idj));
		    mv.addObject("allesperrtagedienichtimjahr", sperrtagDao.findeallesperrtagedienichtzugeordnet(jahrDao.findeallesperrtagediezugeordnet(idj)));
		    mv.setViewName("waehleFeiertagSperrtagfuerJahr");
			}
			return mv;
	}
}